package cn.com.dhc.danlu.util;

import android.util.Base64;

import com.danlu.lib.encrypt.AesUtils;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;


public class AesCryptoUtil {
    /*  
     * 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式，key需要为16位。  
     */
    public static String sKey = AesUtils.getAesKey ();
    private static String ivParameter = AesUtils.getAesIV ();

    // 加密
    public static String encrypt (String sSrc) {
        try {
            Cipher cipher = Cipher.getInstance ("AES/CBC/PKCS5Padding");
            byte[] raw = sKey.getBytes ();
            SecretKeySpec skeySpec = new SecretKeySpec (raw, "AES");
            IvParameterSpec iv = new IvParameterSpec (ivParameter.getBytes ());// 使用CBC模式，需要一个向量iv，可增加加密算法的强度
            cipher.init (Cipher.ENCRYPT_MODE, skeySpec, iv);
            byte[] encrypted = cipher.doFinal (sSrc.getBytes ("utf-8"));
            return Base64.encodeToString (encrypted, Base64.DEFAULT);// 此处使用BASE64做转码。
        } catch (Exception e) {
            return sSrc;
        }
    }
}
